<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    <ul>
        <li>link1</li>
        <li>link2</li>
        <li>link3</li>
        <li>link4</li>
        <li>link5</li>
        <li>link6</li>
        <li>link7</li>
    </ul>
</body>
<script>

    // ;const fn = (function(){
    //     let a = 10;
    //     return function(){
    //         a++;
    //         console.log(a);
    //     }
    // })();

    // fn();
    // fn();
    // fn();
    // fn();
    // fn();


    // ==========


    // 作用域内数据的生命周期
    // 局部：朝生暮死

    // function fn(){
    //     let a = 10;
    //     return function(){
    //         a++
    //         console.log(a);
    //     }
    // }
    // const f = fn();

    // f()
    // f()
    // f()
    // f()
    // f()



    // =======
    // 沙箱模式


    // function fn(){
    //     let a = 10;
    //     let b = "hello";
    //     return {
    //         get a(){
    //             return a;
    //         },
    //         set a(val){
    //             a = val
    //         },
    //         get b(){
    //             return b;
    //         },
    //         set b(val){
    //             b = val;
    //         }
    //     }
    // }

    // const box = fn();

    // console.log(box.a)
    // box.a += 10
    // console.log(box.a)

    // console.log(box.b)
    // box.b += " world"
    // console.log(box.b)


    // ======


    // 解决问题

    // 问题：循环内绑定事件，事件内无法获取循环每次的计数器
    const lis = document.querySelectorAll("li");

    // for(var i=0;i<lis.length;i++){
    //     (function fn(i){
    //         lis[i].onclick = function(){
    //             console.log(i);
    //         }
    //     })(i);
    // }
    // for(var i=0;i<lis.length;i++){
    //     lis[i].onclick = ((i)=>{
    //         return function(){
    //             console.log(i);
    //         }
    //     })(i)
    // }

    // for(let i=0;i<lis.length;i++){
    //     lis[i].onclick = function(){
    //         console.log(i);
    //     }
    // }
    // 当事件执行时，循环早就执行结束了，所以事件内获取到的循环的计数器是循环结束后的计数器


    // 问题：给 不能传参的回调函数 传参

    // setTimeout(fn("hello"), 5000);

    // function fn(a){
    //     return function(){
    //         console.log(a);
    //     }
    // }

    
</script>
</html>